# define _CRT_SECURE_NO_WARNINGS


//int main()
//{
//    int arr[20][3] = { 0 };
//    int n = 0;
//    scanf("%d", &n);
//    int i = 0;
//    int j = 0;
//    for (i = 0; i < n; i++)
//    {
//        for (j = 0; j < 3; j++)
//        {
//            scanf("%d ", &arr[i][j]);
//        }
//    }
//    int count = 0;
//    for (i = 0; i < n; i++)
//    {
//        int sum = 0;
//        for (j = 0; j < 3; j++)
//        {
//            sum += arr[i][j];
//        }
//        int avg = sum / 3;
//        if (avg < 60)
//        {
//            count++;
//        }
//    }
//    printf("%d", count);
//    return 0;
//}


//int fact(int i)
//{
//    if (i > 1)
//    {
//        return i * fact(i - 1);
//    }
//    else
//    {
//        return 1;
//    }
//}
//
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int i = 0;
//    int sum = 0;
//    for (i = 1; i <= n; i++)
//    {
//        sum += fact(i);
//    }
//    printf("%d", sum);
//    return 0;
//}

//int max3(int a, int b, int c)
//{
//    int max = 0;
//    if (a >= b)
//    {
//        if (a >= c)
//        {
//            max = a;
//        }
//        else
//        {
//            max = c;
//        }
//    }
//    else
//    {
//        if (b >= c)
//        {
//            max = b;
//        }
//        else
//        {
//            max = c;
//        }
//    }
//    return max;
//}
//
//int main()
//{
//    int a, b, c;
//    scanf("%d %d %d", &a, &b, &c);
//    float m = 0;
//    m = (float)max3(a + b, b, c) / (float)(max3(a, b + c, c) + max3(a, b, b + c));
//    printf("%.2f", m);
//    return 0;
//}


//int main()
//{
//    int n = 0;
//    int arr[100] = { 0 };
//    scanf("%d", &n);
//    int i = 0;
//    for (i = 0; i < n; i++)
//    {
//        scanf("%d ", &arr[i]);
//    }
//    int x = 0;
//    scanf("%d", &x);
//    int count = 0;
//    for (i = 0; i < n; i++)
//    {
//        if (x == arr[i])
//        {
//            count++;
//        }
//    }
//    printf("%d\n", count);
//    return 0;
//}

//int main()
//{
//    printf("printf(\"Hello world!\\n\");\n");
//    printf("cout << \"Hello world!\" << endl;");
//    return 0;
//}


//int main()
//{
//    int count = 0;
//    int i = 0;
//    for (i = 100; i < 1000; i++)
//    {
//        int j = 0;
//        count++;
//        for (j = 2; j < i; j++)
//        {
//            if (i % j == 0)
//            {
//                count--;
//                break;
//            }
//        }
//    }
//    printf("%d", count);
//    return 0;
//}


int main()
{
    int flag = 0;
    int n = 0;
    scanf("%d", &n);
    int i = 0;
    int j = 0;
    int arr[10][10] = { 0 };
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            scanf("%d ", &arr[i][j]);
        }
    }
    for (i = 1; i < n; i++)
    {
        for (j = 0; j < i; j++)
        {
            if (arr[i][j] != 0)
            {
                flag = 1;
                break;
            }
        }
    }
    if (flag == 1)
    {
        printf("NO\n");
    }
    else
    {
        printf("YES\n");
    }
    return 0;
}